{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import seaborn as sns\n",
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from tensorflow import keras\n",
    "from matplotlib import pyplot as plt\n",
    "import matplotlib as mpl\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']\n",
    "mpl.rcParams['axes.unicode_minus']=False\n",
    "plt.rcParams['figure.figsize'] = (5, 3) # 设置figure_size尺寸\n",
    "plt.rcParams['image.interpolation'] = 'nearest' # 设置 interpolation style\n",
    "plt.rcParams['image.cmap'] = 'gray' # 设置 颜色 style\n",
    "plt.rcParams['savefig.dpi'] = 300 #图片像素\n",
    "plt.rcParams['figure.dpi'] = 100 #分辨率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.set()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.15.4'"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.__version__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 创建数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(1, 20, 30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = 2 * x + np.random.normal(size=30) * 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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cePGtJ/7999/vwgjLm8vvPCCbr/9dl1zzTVatmyZ1q5dqwMHDujCnv5ufcYr6o7eyMzevXs1Y8aMscdz5swp4mi848SJEzp69KiuvPJK2bY96Ydekg4ePKju7m5t3rxZK1asUDgcVldXl5566iktW7bM/UGXuUzmXJK+/vWv66677prw3Ny5c90Yoqc88cQTuvTSS7V9+3bNnDlTf/vb39Td3a2zZ8+qq6tLkrufcW6XgzHPPPOMfvzjH+vYsWOaNWtWsYfjObZtyzRHL5ps375db731lp5//vkJr1m9erWWLFmiHTt2jD23YcMGzZgxQz09Pa6O1wsymfONGzfqkksu0a9//etiDNFTPv3000l/d3R3dyscDuu1116TaZqufsa5RAm4JPUX7Rfp6+vTqVOn1N7ePuH5NWvW6NixY4pGo4UcnidNNefIr3S/GC9atEhDQ0M6f/68659x/u9jko6ODi1atEhtbW369a9/rUQiUewhVYTe3l5JUkNDw4TnFyxYoFgspr6+vmIMqyL84x//0LJly9Tc3KybbrpJr732WrGH5BlvvPGG5syZo+nTp7v+GWcNDmNmz56tLVu26Morr5RhGDp8+LAefPBBffzxx7r77ruLPTzP6+/vlyTV1NRMeD71OHUc+fXNb35Ta9eu1fz58/XJJ5/o0Ucf1fe//3399re/1fLly4s9vLL2+uuvKxwOj61vuv0ZJ+AwZtWqVVq1atXY429961uaNm2afvOb32jz5s368pe/XMTRAYXxox/9aMLj//mf/1FHR4ceeeQR1j1zcPbsWW3dulUtLS3atGlTUcbAJUpcVHt7uxKJhN55551iD8XzamtrJUmDg4MTnh8YGJhwHIV1ySWX6Nvf/rbefvvtYg+lbA0MDOiWW25RXV2ddu7cObYW6vZnnIADSkRjY6Ok/67FpfT29ioQCKi+vr4YwwIcGR4e1m233abBwcFJW47c/owTcLiocDgsn8+nxYsXF3sonldfX6/58+fr0KFDE54Ph8NauXKlgsFgkUZWWc6fP6+//OUvam5uLvZQyk48Htcdd9yh3t5e7d27d9IeWrc/46zBYczNN9+slpYWNTU1SZJeeukl/fGPf9SmTZs0e/bsIo+u/FmWpaNHj0qSzpw5o6GhobEf9KuuukqzZs3Sli1btG3bNs2bN08tLS0Kh8M6fvy49u3bV8yhl62p5jz1F/F3vvMdXXrppfrkk0/0+OOP6z//+Y9+9atfFXPoZemee+7RkSNHtH37dg0NDenNN98cO7Z48WIFg0FXP+Ns9MaY++67Ty+//LLOnj0r27Y1f/58rV+/Xhs3bpRhGMUeXtk7ffq02tra0h578skn1dLSImm0jVFPT48++ugjNTQ06M4771Rra6ubQ/WMqeb8K1/5iu699169++67OnfunEKhkJYvX66uri4tXbrU5dGWv2uvvVZnzpxJe+yll14a6w7j1mecgAMAeBJrcAAATyLgAACeRMABADyJgAMAeBIBBwDwJAIOAOBJBBwAwJMIOACAJxFwAABPIuAAAJ5EwAEAPImAAwB40v8H8roabi1G/5oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 500x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(x = x, y = y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "datasets = keras.datasets.mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'tensorflow.python.keras.api._v1.keras.datasets.mnist' from '/usr/local/lib/python3.7/site-packages/tensorflow_core/python/keras/api/_v1/keras/datasets/mnist/__init__.py'>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "(train_x, train_y), (valid_x, valid_y) = datasets.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 28, 28)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "valid_x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "from functools import partial"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "image = MXM\\\\\n",
    "stripe = F\\\\\n",
    "kernel_size=K\\\\\n",
    "padding=\"VALID\"\\\\\n",
    "out = \\left\\lceil\\frac{M - K + 1}{F}\\right\\rceil\\\\\n",
    "padding=\"SAME\"\\\\\n",
    "out = \\left\\lceil\\frac{M}{F}\\right\\rceil\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "functools.partial(<function leaky_relu at 0x7f7e3cf799d8>, alpha=0.3)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = keras.models.Sequential()\n",
    "partial(tf.nn.leaky_relu, alpha=0.3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "model.add(keras.layers.Flatten(input_shape=[28, 28]))\n",
    "model.add(keras.layers.Dense(400, activation=partial(tf.nn.leaky_relu, alpha=0.3)))\n",
    "model.add(keras.layers.Dense(200, activation=partial(tf.nn.leaky_relu, alpha=0.3)))\n",
    "model.add(keras.layers.Dense(10, activation=tf.nn.softmax))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.001), \n",
    "              loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics=[\"accuracy\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# hitstory = model.fit(x = train_x, y = train_y, batch_size=215, \n",
    "#                      epochs=40, validation_data=(valid_x, valid_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['loss', 'acc', 'val_loss', 'val_acc'])"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.history.history.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.lineplot(x = np.arange(0, len(model.history.history[\"loss\"]), 1),\n",
    "             y = model.history.history[\"loss\"], label=\"loss\")\n",
    "\n",
    "ax = sns.lineplot(x = np.arange(0, len(model.history.history[\"loss\"]), 1),\n",
    "             y = model.history.history[\"val_acc\"], label=\"accuarcy on test set\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.5, 1.0)"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ax1 = sns.lineplot(x = np.arange(0, len(model.history.history[\"loss\"]), 1),\n",
    "#              y = model.history.history[\"val_loss\"], label=\"loss\")\n",
    "ax2 = sns.lineplot(x = np.arange(0, len(model.history.history[\"loss\"]), 1),\n",
    "             y = model.history.history[\"val_acc\"], label=\"accuarcy on test set\")\n",
    "ax2.set_xlabel(\"epoch\")\n",
    "ax2.set_ylabel(\"accuarcy\")\n",
    "ax2.set_title(\"tensorflow + cuda + Adam optimizer : accuarcy graph\")\n",
    "ax2.set_ylim(0.5, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 1.0)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax1 = sns.lineplot(x = np.arange(0, len(model.history.history[\"loss\"]), 1),\n",
    "             y = model.history.history[\"loss\"], label=\"loss\")\n",
    "ax1.set_xlabel(\"epoch\")\n",
    "ax1.set_ylabel(\"loss\")\n",
    "ax1.set_title(\"tensorflow + cuda + Adam optimizer : loss graph\")\n",
    "ax1.set_ylim(0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "model = tf.keras.models.Sequential()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "model.add(keras.layers.Conv2D(filters=16, kernel_size=3,\n",
    "                              input_shape=(28,28,1),padding=\"valid\", strides=2,\n",
    "                                 activation=tf.nn.relu))\n",
    "\n",
    "model.add(keras.layers.Conv2D(filters=32, kernel_size=1 ,padding=\"same\", strides=1,\n",
    "                                 activation=tf.nn.relu))\n",
    "\n",
    "model.add(keras.layers.Conv2D(filters=32, kernel_size=3 ,padding=\"valid\", strides=2))\n",
    "model.add(keras.layers.BatchNormalization())\n",
    "model.add(keras.layers.ReLU())\n",
    "model.add(keras.layers.Flatten())\n",
    "model.add(keras.layers.Dense(500))\n",
    "model.add(keras.layers.BatchNormalization())\n",
    "model.add(keras.layers.ReLU())\n",
    "model.add(keras.layers.Dense(200))\n",
    "model.add(keras.layers.BatchNormalization())\n",
    "model.add(keras.layers.ReLU())\n",
    "model.add(keras.layers.Dense(10, activation=tf.nn.sigmoid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_21\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d_56 (Conv2D)           (None, 13, 13, 16)        160       \n",
      "_________________________________________________________________\n",
      "conv2d_57 (Conv2D)           (None, 13, 13, 32)        544       \n",
      "_________________________________________________________________\n",
      "conv2d_58 (Conv2D)           (None, 6, 6, 32)          9248      \n",
      "_________________________________________________________________\n",
      "batch_normalization_34 (Batc (None, 6, 6, 32)          128       \n",
      "_________________________________________________________________\n",
      "re_lu_26 (ReLU)              (None, 6, 6, 32)          0         \n",
      "_________________________________________________________________\n",
      "flatten_19 (Flatten)         (None, 1152)              0         \n",
      "_________________________________________________________________\n",
      "dense_45 (Dense)             (None, 500)               576500    \n",
      "_________________________________________________________________\n",
      "batch_normalization_35 (Batc (None, 500)               2000      \n",
      "_________________________________________________________________\n",
      "re_lu_27 (ReLU)              (None, 500)               0         \n",
      "_________________________________________________________________\n",
      "dense_46 (Dense)             (None, 200)               100200    \n",
      "_________________________________________________________________\n",
      "batch_normalization_36 (Batc (None, 200)               800       \n",
      "_________________________________________________________________\n",
      "re_lu_28 (ReLU)              (None, 200)               0         \n",
      "_________________________________________________________________\n",
      "dense_47 (Dense)             (None, 10)                2010      \n",
      "=================================================================\n",
      "Total params: 691,590\n",
      "Trainable params: 690,126\n",
      "Non-trainable params: 1,464\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(optimizer=tf.optimizers.Adam(lr=1e-3),\n",
    "              loss=tf.losses.SparseCategoricalCrossentropy(), metrics=[\"accuracy\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "history = model.fit(x = np.expand_dims(train_x, axis=3), y = train_y, batch_size=512,\n",
    "                    epochs=2000, validation_data=(np.expand_dims(valid_x, axis=3), valid_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.5, 27.5, 27.5, -0.5)"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(valid_x[100].reshape( 28, 28, 1))\n",
    "plt.axis(\"off\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "train_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "data.reshape(1, 28, 28, 1).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "1e-4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = torch.rand(5, 8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "b = torch.rand(5, 8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([5, 8, 2])"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.stack((a, b), dim=2).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "torch.stack((a, b), dim=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch import nn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = nn.ModuleList()\n",
    "data += [nn.Sequential(nn.Linear(512, 512),\n",
    "                                            nn.ReLU(),\n",
    "                                            nn.Linear(512, 512),\n",
    "                                            nn.ReLU(),\n",
    "                                            nn.Linear(512, 512),\n",
    "                                            nn.ReLU(),\n",
    "                                            nn.Linear(512, 10))]\n",
    "data += [nn.Sequential(nn.Linear(512, 512),\n",
    "                                            nn.ReLU(),\n",
    "                                            nn.Linear(512, 512),\n",
    "                                            nn.ReLU(),\n",
    "                                            nn.Linear(512, 512),\n",
    "                                            nn.ReLU(),\n",
    "                                            nn.Linear(512, 10))]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sequential(\n",
      "  (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "  (1): ReLU()\n",
      "  (2): Linear(in_features=512, out_features=512, bias=True)\n",
      "  (3): ReLU()\n",
      "  (4): Linear(in_features=512, out_features=512, bias=True)\n",
      "  (5): ReLU()\n",
      "  (6): Linear(in_features=512, out_features=10, bias=True)\n",
      ")\n",
      "Sequential(\n",
      "  (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "  (1): ReLU()\n",
      "  (2): Linear(in_features=512, out_features=512, bias=True)\n",
      "  (3): ReLU()\n",
      "  (4): Linear(in_features=512, out_features=512, bias=True)\n",
      "  (5): ReLU()\n",
      "  (6): Linear(in_features=512, out_features=10, bias=True)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "for layer in data:\n",
    "    print(layer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "1\n"
     ]
    }
   ],
   "source": [
    "for idx, layer in enumerate(data):\n",
    "    print(idx)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "195.225px"
   },
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
